package com.interview02;

/**
 * 一个国家只有一个总统或者主席
 * 一个国家只能有一个皇帝，一山不能容二虎除非
 * 懒汉式:不直接创建对象
 * DCL double check lock 双端检锁机制
 */
public class PresidentBlock {
    //3.添加一个自身的引用对象
    private static PresidentBlock president;
    //1.把构造方法私有化
    private PresidentBlock(){
        System.out.println("创建建国对象....");
    }


    //2.提供一个共有的静态的获取对象的方法
    // 每一个线程还是要获取锁对象，并且释放锁对象，带来性能问题；
    //当第二个线程过来我们应该直接返回对象，而不是在获取锁
    public static PresidentBlock getInstance(){
        if (president == null) {
            synchronized (PresidentBlock.class) {
                if (president == null) {
                    president = new PresidentBlock();
                }
            }
        }
        return president;

    }
}
